package tp.tecnicasdisenio.model.parser;

import tp.tecnicasdisenio.model.MailInterface;
import tp.tecnicasdisenio.model.entity.Alumno;
import tp.tecnicasdisenio.model.entity.Materia;


/**
 * Formato valido: [ALTA-MATERIA-<CODIGO>]<PADRON>-<NOMBRE> 
 */
public class ParserTituloAltaMateria extends ParserTituloAbstract{

	private static final String FORMATO_VALIDO= "^\\[ALTA-MATERIA-([^\\[]+)\\](\\d+)-(.+)$";

	public String codigoMateria(){
		return matcher.group(1);
	}

	public String padron(){
		return matcher.group(2); 
	}
	
	public String nombre(){
		String nombreApellido= matcher.group(3);
		return nombreApellido.substring(0, nombreApellido.lastIndexOf(" "));
	}

	public String apellido(){
		String nombreApellido= matcher.group(3);
		return nombreApellido.substring(nombreApellido.lastIndexOf(" ") + 1);
	}

	@Override
	protected String getFormatoValidoRegExp() {
		return FORMATO_VALIDO;	
	}
	
	public Materia extraerMateria(MailInterface mail){
		this.setMail(mail);
		
		Materia materia= new Materia();
		materia.setCodigo(this.codigoMateria());
		materia.setEmail(mail.getTo().get(0));
		return materia;
	}
	
	public Alumno extraerAlumno(MailInterface mail){
		this.setMail(mail);
		
		Alumno alumno= new Alumno();
		alumno.setPadron(this.padron());
		alumno.setNombre(this.nombre());
		alumno.setApellido(this.apellido());
		alumno.setEmail(mail.getFrom());
		return alumno;
	}

}
